/**
 * 非空判断 true：空，false：不为空
 * ==自动进行类型转换（null==undefined）==>true，===严格类型比较（null==undefined）==>false
 * @param {*} val
 * @returns
 */
export const isEmpty = (val) => {
  if (
    val === '' ||
    val === null ||
    val === undefined ||
    val === 'null' ||
    val === 'undefined'
  ) {
    return true;
  }

  return false;
};


/**
 * 对象深度拷贝
 * 
 * @param {*} obj 拷贝的对象 
 * @returns 新的拷贝对象
 */
export const deepCopy = (obj) => {
  // 如果是基本数据类型或 null，则直接返回
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  // 根据 obj 的类型创建一个新的对象或数组
  const result = Array.isArray(obj) ? [] : {};
  // 遍历 obj 的属性，并递归调用 deepCopy 进行深拷贝
  for (let key in obj) {
    result[key] = deepCopy(obj[key]);
  }
  return result;
}

// 数据合并
export function mergeRecursive(source, target) {
  for (var p in target) {
    try {
      if (target[p].constructor == Object) {
        source[p] = mergeRecursive(source[p], target[p]);
      } else {
        source[p] = target[p];
      }
    } catch (e) {
      source[p] = target[p];
    }
  }
  return source;
};